beforeEach(function() {
			this.addMatchers({
						toExactlyMatch : function(expected) {
							var a1, a2, l, i, key, actual = this.actual;

							var getKeys = function(o) {
								var a = [];
								for (key in o) {
									if (o.hasOwnProperty(key)) {
										a.push(key);
									}
								}
								return a;
							}
							a1 = getKeys(actual);
							a2 = getKeys(expected);

							l = a1.length;
							if (l !== a2.length) {
								return false;
							}
							for (i = 0; i < l; i++) {
								key = a1[i];
								expect(key).toEqual(a2[i]);
								expect(actual[key]).toEqual(expected[key]);
							}

							return true;
						}
					})
		});
